﻿using Nop.Core;
using Nop.Plugin.Widgets.AllInOne.Domain;
using System.Collections.Generic;

namespace Nop.Plugin.Widgets.AllInOne.Services
{
    public partial interface IAllInOneService
    {
        /// <summary>
        /// Delete AllInOne
        /// </summary>
        /// <param name="AllInOne">AllInOne</param>
        void DeleteAllInOne(AllInOneObject allinOne);

        /// <summary>
        /// Gets AllInOnes widgetZones
        /// </summary>
        /// <returns>AllInOne</returns>
        IList<string> GetAllInOnesWidgetZones();

        /// <summary>
        /// Gets all AllInOnes
        /// </summary>
        /// <param name="name">name</param>
        /// <param name="pageIndex">Page index</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>AllInOnes</returns>
        IPagedList<AllInOneObject> GetAllInOnes(string name = "", int pageIndex = 0, int pageSize = int.MaxValue);

        /// <summary>
        /// Gets AllInOnes by widgetZones
        /// </summary>
        /// <param name="widgetZones">widgetZones</param>
        /// <returns>AllInOne</returns>
        IList<AllInOneObject> GetAllInOnesByWidgetZones(string widgetZones);

        /// <summary>
        /// Gets a AllInOne
        /// </summary>
        /// <param name="AllInOneId">AllInOne identifier</param>
        /// <returns>AllInOne</returns>
        AllInOneObject GetAllInOneById(int allInOneId);

        /// <summary>
        /// Inserts a AllInOne
        /// </summary>
        /// <param name="AllInOne">AllInOne</param>
        void InsertAllInOne(AllInOneObject allInOne);

        /// <summary>
        /// Updates the AllInOne
        /// </summary>
        /// <param name="AllInOne">AllInOne</param>
        void UpdateAllInOne(AllInOneObject allInOne);
    }
}
